package demo4接口使用实例_2之浅拷贝;

/**
 * Java中内置了一些很有用的接口
 * Clonable就是其中之一
 *
 * Object类里面存在一个clone方法，调用这个方法就可以创建一个对象的"拷贝",但想要合法调用clone方法，必须要先实现一个Clonable接口
 *
 */
class Person implements Cloneable{//Cloneable是一个空接口，也叫标记接口，证明当前类是可以被克隆的
    public int age;

    public Person(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                '}';
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Test {
    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person(10);
        Person person2 = (Person) person1.clone();//err 无法直接调用父类Object的clone方法
        //在Object中 clone方法是由protected限定符修饰的，不同包子类访问 是需要 super进行调用的
        System.out.println(person2.age);
    }
}